group { name: "e/modules/packagekit/icon/bugfix";
   images.image: "pkg-bug.png" COMP;
   parts {
      part { name: "image";  mouse_events: 0;
         description { state: "default" 0.0;
            image.normal: "pkg-bug.png";
            aspect: 1.0 1.0; aspect_preference: BOTH;
            color_class: "/fg/normal/gadgets/packagekit/pkg/bug";
         }
      }
   }
}

group { name: "e/modules/packagekit/icon/enhancement";
   images.image: "pkg-enhance.png" COMP;
   parts {
      part { name: "image"; mouse_events: 0;
         description { state: "default" 0.0;
            image.normal: "pkg-enhance.png";
            aspect: 1.0 1.0; aspect_preference: BOTH;
            color_class: "/fg/normal/gadgets/packagekit/pkg/enhancement";
         }
      }
   }
}

group { name: "e/modules/packagekit/icon/important";
   images.image: "pkg-important.png" COMP;
   parts {
      part { name: "image"; mouse_events: 0;
         description { state: "default" 0.0;
            image.normal: "pkg-important.png";
            aspect: 1.0 1.0; aspect_preference: BOTH;
            color_class: "/fg/normal/gadgets/packagekit/pkg/important";
         }
      }
   }
}

group { name: "e/modules/packagekit/icon/low";
   images.image: "pkg-low.png" COMP;
   parts {
      part { name: "image"; mouse_events: 0;
         description { state: "default" 0.0;
            image.normal: "pkg-low.png";
            aspect: 1.0 1.0; aspect_preference: BOTH;
            color_class: "/fg/normal/gadgets/packagekit/pkg/low-priority";
         }
      }
   }
}

group { name: "e/modules/packagekit/icon/normal";
   images.image: "pkg-normal.png" COMP;
   parts {
      part { name: "image"; mouse_events: 0;
         description { state: "default" 0.0;
            image.normal: "pkg-normal.png";
            aspect: 1.0 1.0; aspect_preference: BOTH;
            color_class: "/fg/normal/gadgets/packagekit/pkg/normal";
         }
      }
   }
}

group { name: "e/modules/packagekit/icon/security";
   images.image: "pkg-security.png" COMP;
   parts {
      part { name: "image"; mouse_events: 0;
         description { state: "default" 0.0;
            image.normal: "pkg-security.png";
            aspect: 1.0 1.0; aspect_preference: BOTH;
            color_class: "/fg/normal/gadgets/packagekit/pkg/security";
         }
      }
   }
}

group { name: "e/modules/packagekit/main";
   max: 160 160;
   set { name: "pkg_base";
      image { image: "pkg-base-160.png"  COMP; size: 81 81 99999 99999; }
      image { image: "pkg-base-080.png"  COMP; size: 41 41 80 80 99999; }
      image { image: "pkg-base-040.png"  COMP; size:  0  0 40 40; }
   }
   set { name: "pkg_shade";
      image { image: "pkg-shade-160.png"  COMP; size: 81 81 99999 99999; }
      image { image: "pkg-shade-080.png"  COMP; size: 41 41 80 80 99999; }
      image { image: "pkg-shade-040.png"  COMP; size:  0  0 40 40; }
   }
   set { name: "pkg_label";
      image { image: "pkg-label-160.png"  COMP; size: 81 81 99999 99999; }
      image { image: "pkg-label-080.png"  COMP; size: 41 41 80 80 99999; }
      image { image: "pkg-label-040.png"  COMP; size:  0  0 40 40; }
   }
   images.image: "pkg-ok.png" COMP;
   images.image: "pkg-err.png" COMP;

   images.image: "pkg-busy1.png" COMP;
   images.image: "pkg-busy2.png" COMP;
   images.image: "pkg-busy3.png" COMP;
   images.image: "pkg-busy4.png" COMP;
   parts {
      part { name: "base";
         description { state: "default" 0.0;
            aspect: 1.0 1.0; aspect_preference: BOTH;
            color_class: "/fg/normal/gadgets/packagekit/base";
            image.normal: "pkg_base";
         }
      }
      part { name: "shade";
         description { state: "default" 0.0;
            rel.to: "base";
            image.normal: "pkg_shade";
         }
      }
      part { name: "label";
         description { state: "default" 0.0;
            rel.to: "base";
            image.normal: "pkg_label";
            color_class: "/fg/normal/gadgets/packagekit/label";
         }
      }
      part { name: "num_updates"; type: TEXT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.relative: (8/40) (8/40);
            rel2.relative: (32/40) (32/40);
            color_class: "/fg/normal/gadgets/packagekit/text/updates";
            text { font: FN; size: 10;
            }
         }
      }
      part { name: "status";
         description { state: "default" 0.0;
            fixed: 1 1;
            visible: 0;
         }
         description { state: "running" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
         description { state: "updates" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
         description { state: "updated" 0.0;
            inherit: "default" 0.0;
            visible: 1;
            rel1.relative: (15/40) (15/40);
            rel2.relative: (25/40) (25/40);
            image.normal: "pkg-ok.png";
            color_class: "/fg/normal/gadgets/packagekit/status/ok";
         }
         description { state: "error" 0.0;
            inherit: "default" 0.0;
            visible: 1;
            rel1.relative: (15/40) (15/40);
            rel2.relative: (25/40) (25/40);
            image.normal: "pkg-err.png";
            color_class: "/fg/normal/gadgets/packagekit/status/error";
         }
      }
      part { name: "busy_clip"; type: RECT;
         description { state: "default" 0.0;
            color: 255 255 255 0; // no cc
            visible: 0;
         }
         description { state: "busy" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 255; // no cc
            visible: 1;
         }
      }
      part { name: "busy1"; mouse_events: 0;
         clip_to: "busy_clip";
         description { state: "default" 0.0;
            fixed: 1 1;
            image.normal: "pkg-busy1.png";
            rel1.relative: (7/40) (7/40);
            rel2.relative: (33/40) (33/40);
            map.on: 1;
            map.smooth: 1;
            map.rotation.center: "busy1";
            color_class: "/fg/normal/gadgets/packagekit/status/busy/1";
         }
         description { state: "spin" 0.0;
            inherit: "default" 0.0;
            map.rotation.z: 360;
         }
      }
      part { name: "busy2"; mouse_events: 0;
         clip_to: "busy_clip";
         description { state: "default" 0.0;
            fixed: 1 1;
            image.normal: "pkg-busy2.png";
            rel1.relative: (7/40) (7/40);
            rel2.relative: (33/40) (33/40);
            map.on: 1;
            map.smooth: 1;
            map.rotation.center: "busy1";
            color_class: "/fg/normal/gadgets/packagekit/status/busy/2";
         }
         description { state: "spin" 0.0;
            inherit: "default" 0.0;
            map.rotation.z: -360;
         }
      }
      part { name: "busy3"; mouse_events: 0;
         clip_to: "busy_clip";
         description { state: "default" 0.0;
            fixed: 1 1;
            image.normal: "pkg-busy3.png";
            rel1.relative: (7/40) (7/40);
            rel2.relative: (33/40) (33/40);
            map.on: 1;
            map.smooth: 1;
            map.rotation.center: "busy1";
            color_class: "/fg/normal/gadgets/packagekit/status/busy/3";
         }
         description { state: "spin" 0.0;
            inherit: "default" 0.0;
            map.rotation.z: 720;
         }
      }
      part { name: "busy4"; mouse_events: 0;
         clip_to: "busy_clip";
         description { state: "default" 0.0;
            fixed: 1 1;
            image.normal: "pkg-busy4.png";
            rel1.relative: (7/40) (7/40);
            rel2.relative: (33/40) (33/40);
            map.on: 1;
            map.smooth: 1;
            map.rotation.center: "busy1";
            color_class: "/fg/normal/gadgets/packagekit/status/busy/4";
         }
         description { state: "spin" 0.0;
            inherit: "default" 0.0;
            map.rotation.z: -720;
         }
      }
   }
   programs {
      program { name: "spin";
         signal: "e,state,hung"; source: "e";
         action: STATE_SET "spin" 0.0;
         transition: LINEAR 1.0;
         target: "busy1";
         target: "busy2";
         target: "busy3";
         target: "busy4";
         after: "spin2";
      }
      program { name: "spin2";
         action: STATE_SET "default" 0.0;
         target: "busy1";
         target: "busy2";
         target: "busy3";
         target: "busy4";
         after: "spin";
      }
      program { name: "busy-on";
         signal: "e,state,hung"; source: "e";
         action: STATE_SET "busy" 0.0;
         transition: SINUSOIDAL 0.25;
         target: "busy_clip";
      }
      program { name: "busy-off";
         signal: "e,state,unhung"; source: "e";
         action: STATE_SET "default" 0.0;
         transition: SINUSOIDAL 1.0;
         target: "busy_clip";
         after: "spin3";
      }
      program { name: "spin3";
         action: ACTION_STOP;
         target: "spin";
         target: "spin2";
         after: "spin4";
      }
      program { name: "spin4";
         action: STATE_SET "default" 0.0;
         target: "busy1";
         target: "busy2";
         target: "busy3";
         target: "busy4";
      }

      program {
         signal: "packagekit,state,none"; source: "e";
         action: STATE_SET "default" 0.0;
         target: "status";
         after: "busy-off";
      }
      program {
         signal: "packagekit,state,working"; source: "e";
         action: STATE_SET "running" 0.0;
         target: "status";
         after: "spin";
      }
      program {
         signal: "packagekit,state,working"; source: "e";
         action: STATE_SET "running" 0.0;
         target: "status";
         after: "busy-on";
      }
      program {
         signal: "packagekit,state,updates"; source: "e";
         action: STATE_SET "updates" 0.0;
         target: "status";
         after: "busy-off";
      }
      program {
         signal: "packagekit,state,updated"; source: "e";
         action: STATE_SET "updated" 0.0;
         target: "status";
         after: "busy-off";
      }
      program {
         signal: "packagekit,state,error"; source: "e";
         action: STATE_SET "error" 0.0;
         target: "status";
         after: "busy-off";
      }
   }
}
